Location: FieldML example - a simple mesh @ 0a6cfd4b9453 / Simple Mesh MathML FieldML.xml

Author:
Randall Britten <r.britten@auckland.ac.nz>
Date:
2012-07-05 16:04:32+12:00
Desc:
Correction: connectivity "parameters" are indexed by element and then by local node. Hence, needed to add local nodes for unit cube with 2 by 2 by 2 nodes, i.e. 8 nodes.
Permanent Source URI:
https://models.physiomeproject.org/w/randall/FieldML-example-simple-mesh/rawfile/0a6cfd4b945363a2485ce5177b3c69816516c0f1/Simple Mesh MathML FieldML.xml

<?xml version="1.0" encoding="UTF-8" ?>

<fieldml>
  <!-- An inline data resource listing 8 corner nodes per element. Resources are just raw data. 
       As per FieldML 0.5, "metadata" describing the indexes is specified later, in this case by "fromParameterStore".-->

  <DataResource name="mesh1.nodes.connectivity.resource">
    <DataResourceDescription>
      <DataResourceString>
        1	2	3	4	5	6	7	8
        5	6	7	8	9	10	11	12
        9	10	11	12	13	14	15	16
        13	14	15	16	17	18	19	20
      </DataResourceString>
    </DataResourceDescription>
    <ArrayDataSource name="mesh1.nodes.connectivity.data" location="1" rank="2">
      <RawArraySize>
      4 8
      </RawArraySize>
    </ArrayDataSource>
  </DataResource>

  <!-- inline data resource listing raw values for the 20 nodes * 3 components of the 'coordinates' field.  -->
  <DataResource name="mesh1.coordinates.resource">
    <DataResourceDescription>
      <DataResourceString>
      0.0 0.0 0.0
      1.0 0.0 0.0
      0.0 1.0 0.0
      1.0 1.0 0.0
      0.0 0.0 1.0
      1.0 0.0 1.0
      0.0 1.0 1.0
      1.0 1.0 1.0
      0.0 0.0 2.0
      1.0 0.0 2.0
      0.0 1.0 2.0
      1.0 1.0 2.0
      0.0 0.0 3.0
      1.0 0.0 3.0
      0.0 1.0 3.0
      1.0 1.0 3.0
      0.0 0.0 4.0
      1.0 0.0 4.0
      0.0 1.0 4.0
      1.0 1.0 4.0
      </DataResourceString>
    </DataResourceDescription>
    <ArrayDataSource name="mesh1.coordinates.data" location="1" rank="2">
      <RawArraySize>
      20 3
      </RawArraySize>
    </ArrayDataSource>
  </DataResource>

  <!-- inline data resource listing pressure values for the 20 nodes. -->
  <DataResource name="mesh1.pressure.resource">
    <DataResourceDescription>
      <DataResourceString>
       80000.0
      100000.0
      100000.0
       80000.0
      100000.0
       80000.0
       80000.0
      100000.0
       70000.0
      110000.0
      100000.0
       70000.0
      120000.0
       80000.0
       80000.0
       90000.0
       90000.0
      100000.0
      100000.0
       90000.0
      </DataResourceString>
    </DataResourceDescription>
    <ArrayDataSource name="mesh1.pressure.data" location="1" rank="1">
      <RawArraySize>
      20
      </RawArraySize>
    </ArrayDataSource>
  </DataResource>

  <math xmlns="http://www.w3.org/1998/Math/MathML">
    <mtable columnalign='left' linebreak='true'>
      <mtr>
        <mtd>
          <apply>
            <apply>
              <eq/>
              <ci>lib_RC3d</ci>
              <apply>
                <cartesianproduct/>
                <!-- Or could use the MathML equivalent of cartesian power product here. -->
                <reals/>
                <reals/>
                <reals/>
              </apply>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_RC3dLabels</ci>
            <list>
              <bvar>
                <ci>x</ci>
              </bvar>
              <condition>
                <apply>
                  <and/>
                  <apply>
                    <geq/>
                    <ci>x</ci>
                    <cn>1</cn>
                  </apply>
                  <apply>
                    <leq/>
                    <ci>x</ci>
                    <cn>3</cn>
                  </apply>
                  <apply>
                    <in/>
                    <ci>x</ci>
                    <naturalnumbers/>
                  </apply>
                </apply>
              </condition>
              <ci>x</ci>

            </list>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_U1</ci>
            <interval closure='closed'>
              <cn>0</cn>
              <cn>1</cn>
            </interval>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <apply>
              <eq/>
              <ci>lib_U2</ci>
              <apply>
                <cartesianproduct/>
                <ci>lib_U1</ci>
                <ci>lib_U1</ci>
              </apply>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <apply>
              <eq/>
              <ci>lib_U3</ci>
              <apply>
                <cartesianproduct/>
                <ci>lib_U1</ci>
                <ci>lib_U1</ci>
                <ci>lib_U1</ci>
              </apply>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_localNodes_3d_UnitCube_2x2x2</ci>
            <list>
              <bvar>
                <ci>x</ci>
              </bvar>
              <condition>
                <apply>
                  <and/>
                  <apply>
                    <geq/>
                    <ci>x</ci>
                    <cn>1</cn>
                  </apply>
                  <apply>
                    <leq/>
                    <ci>x</ci>
                    <cn>8</cn>
                  </apply>
                  <apply>
                    <in/>
                    <ci>x</ci>
                    <naturalnumbers/>
                  </apply>
                </apply>
              </condition>
              <ci>x</ci>
            </list>
          </apply>
        </mtd>
      </mtr>

      
      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1Nodes</ci>
            <list>
              <bvar>
                <ci>x</ci>
              </bvar>
              <condition>
                <apply>
                  <and/>
                  <apply>
                    <geq/>
                    <ci>x</ci>
                    <cn>1</cn>
                  </apply>
                  <apply>
                    <leq/>
                    <ci>x</ci>
                    <cn>20</cn>
                  </apply>
                  <apply>
                    <in/>
                    <ci>x</ci>
                    <naturalnumbers/>
                  </apply>
                </apply>
              </condition>
              <ci>x</ci>
            </list>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1Elements</ci>
            <list>
              <bvar>
                <ci>x</ci>
              </bvar>
              <condition>
                <apply>
                  <and/>
                  <apply>
                    <geq/>
                    <ci>x</ci>
                    <cn>1</cn>
                  </apply>
                  <apply>
                    <leq/>
                    <ci>x</ci>
                    <cn>4</cn>
                  </apply>
                  <apply>
                    <in/>
                    <ci>x</ci>
                    <naturalnumbers/>
                  </apply>
                </apply>
              </condition>
              <ci>x</ci>
            </list>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1</ci>
            <apply>
              <cartesianproduct/>
              <ci>mesh1Elements</ci>
              <ci>lib_U3</ci>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_phi1</ci>
            <lambda>
              <bvar>
                <ci>x</ci>
              </bvar>
              <domainofapplication>
                <ci>lib_U1</ci>
              </domainofapplication>
              <apply>
                <minus/>
                <cn>1</cn>
                <ci>x</ci>
              </apply>
            </lambda>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_phi2</ci>
            <lambda>
              <bvar>
                <ci>x</ci>
              </bvar>
              <domainofapplication>
                <ci>lib_U1</ci>
              </domainofapplication>
              <ci>x</ci>
            </lambda>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_LL1</ci>
            <list>
              <ci>lib_phi1</ci>
              <ci>lib_phi2</ci>
            </list>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_LL2</ci>
            <apply>
              <csymbol cd="fieldml1">functionTensorProduct</csymbol>
              <ci>lib_LL1</ci>
              <ci>lib_LL1</ci>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>lib_LL3</ci>
            <apply>
              <csymbol cd="fieldml1">functionTensorProduct</csymbol>
              <ci>lib_LL1</ci>
              <ci>lib_LL1</ci>
              <ci>lib_LL1</ci>
            </apply>
          </apply>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1NodalConnectivity</ci>
            <apply>
              <csymbol>fromParameterStore</csymbol>
              <ci>mesh1.nodes.connectivity.data</ci>
              <list>
                <ci>mesh1Elements</ci>
                <ci>lib_localNodes_3d_UnitCube_2x2x2</ci>
              </list>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1NodalPressure</ci>
            <apply>
              <csymbol cd="fieldml1">fromParameterStore</csymbol>
              <ci>mesh1.pressure.resource</ci>
              <list>
                <ci>mesh1Nodes</ci>
              </list>
            </apply>
          </apply>
        </mtd>
      </mtr>
      <!-- In the definition above, we are just using the same interpolation for all elements of the mesh. -->

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1NodalGeometricCoordinates</ci>
            <apply>
              <csymbol cd="fieldml1">fromParameterStore</csymbol>
              <ci>mesh1.coordinates.data</ci>
              <list>
                <ci>mesh1Nodes</ci>
                <ci>lib_RC3dLabels</ci>
              </list>
            </apply>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <apply>
              <domain/>
              <ci>dofSourceType</ci>
            </apply>
            <ci>mesh1Nodes</ci>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>mesh1nodalDofsForElement</ci>
            <lambda>
              <bvar>
                <list>
                  <ci>element</ci>
                  <ci>dofsSource</ci>
                </list>
              </bvar>
              <domainofapplication>
                <apply>
                  <cartesianproduct/>
                  <ci>mesh1Elements</ci>
                  <ci>dofSourceType</ci>
                </apply>
              </domainofapplication>
              <apply>
                <selector/>
                <ci>dofsSource</ci>
                <apply>
                  <selector/>
                  <ci>mesh1NodalConnectivity</ci>
                  <ci>element</ci>
                </apply>
              </apply>
            </lambda>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>fieldTemplate</ci>
            <lambda>
              <bvar>
                <list>
                  <list>
                    <ci>element</ci>
                    <ci>xi</ci>
                  </list>
                  <ci>dofSource</ci>
                </list>
              </bvar>
              <domainofapplication>
                <apply>
                  <cartesianproduct/>
                  <ci>mesh1</ci>
                  <ci>dofSourceType</ci>
                </apply>

              </domainofapplication>
              <apply>
                <scalarproduct/>
                <apply>
                  <ci>mesh1nodalDofsForElement</ci>
                  <ci>element</ci>
                  <ci>dofSource</ci>
                </apply>
                <apply>
                  <ci>lib_LL3</ci>
                  <ci>xi</ci>
                </apply>
              </apply>
            </lambda>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>pressure</ci>
            <lambda>
              <bvar>
                <list>
                  <ci>element</ci>
                  <ci>xi</ci>
                </list>
              </bvar>
              <domainofapplication>
                <ci>mesh1</ci>
              </domainofapplication>
              <apply>
                <ci>fieldTemplate</ci>
                <list>
                  <list>
                    <ci>element</ci>
                    <ci>xi</ci>
                  </list>
                  <ci>mesh1NodalPressure</ci>
                </list>
              </apply>
            </lambda>
          </apply>
        </mtd>
      </mtr>

      <mtr>
        <mtd>
          <apply>
            <eq/>
            <ci>geometricCoordinates</ci>
            <lambda>
              <bvar>
                <list>
                  <ci>element</ci>
                  <ci>xi</ci>
                </list>
              </bvar>
              <domainofapplication>
                <ci>mesh1</ci>
              </domainofapplication>
              <apply>
                <ci>fieldTemplate</ci>
                <list>
                  <list>
                    <ci>element</ci>
                    <ci>xi</ci>
                  </list>
                  <ci>mesh1NodalGeometricCoordinates</ci>
                </list>
              </apply>
            </lambda>
          </apply>
        </mtd>
      </mtr>

    </mtable>
  </math>
</fieldml>